home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib01.dsk / F.A.S.T. ANALYSIS.bas < prev    next >
BASIC Source File  |  2023-02-26  |  11KB  |  230 lines

  1. 2  REM  *************************
  2. 3  REM  ** F.A.S.T. ANALYSIS   **
  3. 4  REM  ** MICRO-SPARC, INC.   **
  4. 5  REM  ** P.O. BOX 325        **
  5. 6  REM  ** LINCOLN, MASS 01773 **
  6. 7  REM  ** COPYRIGHT (C) 1980  **
  7. 8  REM  *************************
  8. 15 SY = 0:PK = 0: GOTO 40
  9. 30  PRINT  SPC( PK -SY)W$;:SY = SY +(PK -SY) + LEN(W$): RETURN 
  10. 35  PRINT  SPC( PK -SY)W$: RETURN 
  11. 40  DIM M$(13),T(13),NZ(20),PZ(20),NH(13),MH(13),MO(13)
  12. 41  DIM CC$(20)
  13. 45  FOR N = 1 TO 12: READ M$(N): NEXT N
  14. 47  HOME : PRINT : PRINT : PRINT  TAB( 10)"FORECAST AND SALES TREND": PRINT  TAB( 12)"(F.A.S.T) ANALYSIS"
  15. 48  PRINT  TAB( 11)" MICRO-SPARC, INC. ": PRINT : PRINT "INSTRUCTIONS? ENTER Y OR N";: INPUT XX$: IF XX$ = "Y"  THEN  GOSUB 5000
  16. 49  PRINT : PRINT "TO ADJUST THE REPORT WIDTH:": PRINT "ENTER 'G' FOR > 80 COLUMNS": PRINT "ENTER 'L' FOR <= 80 COLUMNS": PRINT : INPUT "ENTER G OR L";ZZ$:K = 6: IF ZZ$ = "G"  THEN K = 5
  17. 50 D$ =  CHR$(4): INPUT "READ OR CREATE SALES MODEL. R OR C? ";XX$
  18. 51  PRINT D$;"NOMONI,O,C"
  19. 55  IF XX$ = "R"  THEN  GOSUB 390: DIM PN$(NP),P(NP,5,12),PN(NP,12),U(NP,12),D(NP,12): GOSUB 350: GOTO 500
  20. 100  INPUT "NUMBER OF PRODUCTS TO BE MODELED? ";NP
  21. 105  DIM PN$(NP),P(NP,5,13),PN(NP,13),U(NP,13),D(NP,13)
  22. 110  FOR I = 1 TO NP:
  23. 111  PRINT "WHAT IS THE NAME OF PRODUCT #";I: INPUT PN$(I): PRINT : IF I >1  THEN 113
  24. 112  PRINT "ENTER THE UNITS OF PRICE": PRINT "1 = $ DOLLARS": PRINT "2 = $100'S OF DOLLARS": PRINT "3 = $1000'S OF DOLLARS";: INPUT UN
  25. 113  INPUT "WHAT IS THE SALES VALUE/UNIT?";SV(I): HOME : IF I >1  THEN 200
  26. 115  PRINT "NOW PLEASE ENTER THE SALES MODEL FOR": PRINT "' ";PN$(I);" ' BY MONTH.": PRINT 
  27. 120  PRINT "THIS WILL INVOLVE MAKING A JUDGEMENT": PRINT "ABOUT THE UNIT SALES THAT ARE MADE EACH": PRINT "MONTH BY 5 GROUPS OF SALESMEN."
  28. 125  PRINT : PRINT "FIRST, YOU'LL BE ASKED TO ENTER THE": PRINT "AVERAGE SALES FOR EACH MONTH FOR THE": PRINT "TOP 20% OF YOUR SALESFORCE.  THEN YOU"
  29. 130  PRINT "WILL BE ASKED TO ENTER THE AVERAGE": PRINT "SALES FOR EACH MONTH FOR THE NEXT 20%": PRINT "OF YOUR SALESFORCE.  YOU WILL CONTINUE"
  30. 135  PRINT "ENTERING THE 'SALES MODEL' ALL THE WAY": PRINT "THROUGH TO THE MONTHLY SALES FOR THE": PRINT "BOTTOM 20% OF YOUR SALESFORCE."
  31. 140  PRINT : PRINT "IT'S A TEDIOUS PROCESS BUT PAYS BIG": PRINT "DIVIDENDS IN FORECASTING AND PLANNING!": PRINT 
  32. 145  PRINT "HIT ANY KEY TO BEGIN": GET K$: PRINT K$
  33. 200  HOME : FOR X = 4 TO 0  STEP  -1
  34. 205  PRINT "FOR THE ";X *20;"-";(X +1) *20;" % OF THE SALESFORCE"
  35. 210  PRINT "ENTER THE PROBABLE SALES OF '";PN$(I);"'": PRINT "FOR EACH MONTH"
  36. 220  FOR N = 1 TO 12
  37. 225  PRINT M$(N);" SALES=";: INPUT P(I,X +1,N)
  38. 230  NEXT N: HOME : NEXT X: REM  REMOVE HOME INSTRUCTION IN ORDER TO SCROLL MONTHS
  39. 240  HOME : PRINT "NOW ENTER THE PROBABLE SALES (BY MONTH)": PRINT "FOR A TYPICAL NEW HIRE SALESPERSON"
  40. 250  FOR N = 1 TO 12
  41. 260  PRINT M$(N);" SALES ";: INPUT PN(I,N): NEXT N
  42. 270  HOME : PRINT "NEXT PRODUCT": NEXT I
  43. 300  HOME : INPUT "STORE SALES MODEL ON DISK? Y OR N.";XX$
  44. 305  IF XX$ < >"Y"  THEN 500
  45. 310  PRINT D$;"OPEN MODEL"
  46. 311  PRINT D$;"WRITE MODEL"
  47. 315  PRINT NP
  48. 317  PRINT UN
  49. 320  FOR I = 1 TO NP
  50. 322  PRINT PN$(I)
  51. 324  PRINT SV(I)
  52. 325  FOR X = 1 TO 5
  53. 326  FOR N = 1 TO 12
  54. 328  PRINT P(I,X,N)
  55. 330  NEXT N: NEXT X
  56. 332  FOR N = 1 TO 12
  57. 333  PRINT PN(I,N)
  58. 334  NEXT N: NEXT I
  59. 335  PRINT D$;"CLOSE MODEL"
  60. 340  GOTO 500
  61. 350  PRINT D$;"OPEN MODEL"
  62. 355  PRINT D$;"READ MODEL"
  63. 360  INPUT NP
  64. 361  INPUT UN
  65. 362  FOR I = 1 TO NP
  66. 364  INPUT PN$(I)
  67. 366  INPUT SV(I)
  68. 367  FOR X = 1 TO 5
  69. 368  FOR N = 1 TO 12
  70. 370  INPUT P(I,X,N)
  71. 372  NEXT N: NEXT X
  72. 374  FOR N = 1 TO 12
  73. 375  INPUT PN(I,N)
  74. 376  NEXT N: NEXT I
  75. 380  PRINT D$;"CLOSE MODEL"
  76. 385  GOTO 500
  77. 390  PRINT D$;"OPEN MODEL"
  78. 392  PRINT D$;"READ MODEL"
  79. 394  INPUT NP
  80. 396  PRINT D$;"CLOSE MODEL"
  81. 398  RETURN 
  82. 500  HOME : INPUT "# OF SALESMEN";NS:NS = NS *100
  83. 502  IF UN = 1  THEN Z$ = "($ UNITS)"
  84. 503  IF UN = 2  THEN Z$ = "($ 100'S)"
  85. 504  IF UN = 3  THEN Z$ = "($ 1000'S)"
  86. 505 CC = 1
  87. 506  PRINT "COMMENTS? TYPE 'END' TO CONTINUE"
  88. 507  INPUT CC$(CC)
  89. 508  IF CC$(CC) = "END"  THEN 510
  90. 509 CC = CC +1: GOTO 507
  91. 510  FOR I = 1 TO NP
  92. 520  PRINT "% OF TIME TO BE SPENT ON ";PN$(I);: INPUT PT(I)
  93. 530  NEXT I
  94. 600 Q = 1
  95. 610  INPUT "# OF NEW HIRES PLANNED? 0 TO END ";NH(Q): IF NH(Q) = 0  THEN 700
  96. 620  INPUT "HIRE AT THE END OF MONTH #? (1-12) ";MH(Q)
  97. 621 NH(Q) = NH(Q) *100
  98. 622  FOR I = 1 TO NP:NZ(I) = NH(Q) *(PT(I)/100)
  99. 623 PZ(I) = PZ(I) +NZ(I)
  100. 625 MO(Q) = 12 -MH(Q): REM  MONTHS ON BOARD
  101. 628 V = MH(Q) +1
  102. 632  FOR X = 1 TO MO(Q)
  103. 635 U(I,V) = U(I,V) + INT((NZ(I) *PN(I,X))/100 +.5)
  104. 638 V = V +1
  105. 645  NEXT X:V = MH(Q) +1: NEXT I
  106. 695 Q = Q +1: GOTO 610
  107. 700  REM  DISTRIBUTE SALESFORCE BY PRODUCT
  108. 705 Q = Q -1
  109. 710  FOR I = 1 TO NP
  110. 715 SP(I) = NS *(PT(I)/100)
  111. 720  NEXT I
  112. 730  REM  DISTRIBUTE SALESFORCE BY PRODUCTIVITY RANKING
  113. 735  FOR I = 1 TO NP
  114. 740  FOR X = 1 TO 5
  115. 745 ES(I,X) = SP(I) *.2
  116. 750  NEXT X: NEXT I
  117. 755  REM  COMPUTE UNIT SALES
  118. 760  FOR I = 1 TO NP
  119. 765  FOR X = 1 TO 5
  120. 770  FOR N = 1 TO 12
  121. 775 U(I,N) = U(I,N) + INT((P(I,X,N) *ES(I,X))/100 +.5)
  122. 785  NEXT N,X,I
  123. 800  REM  COMPUTE SALES VALUES
  124. 805  FOR I = 1 TO NP
  125. 810  FOR N = 1 TO 12
  126. 815 D(I,N) = U(I,N) *SV(I)
  127. 820  NEXT N,I
  128. 2000  PR# 1
  129. 2005  PRINT  CHR$(9);"100N": REM  PRINTER WIDTH
  130. 2010  PRINT  CHR$(2); CHR$(30)
  131. 2011  FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT : PRINT  TAB( K *3)"*** FORECAST AND SALES TREND (F.A.S.T.) ANALYSIS ***": FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  132. 2013  PRINT : PRINT "** PLANNING ASSUMPTIONS/COMMENTS **"
  133. 2014  PRINT : FOR I = 1 TO CC -1: PRINT CC$(I): NEXT I: PRINT 
  134. 2015  PRINT "NUMBER OF SALESMEN AT THE START OF THE YEAR ="; INT(NS/100): PRINT 
  135. 2017  IF NH(I) < = 0  THEN 2040
  136. 2020  FOR I = 1 TO Q: PRINT  INT(NH(I)/100);" NEW SALES PEOPLE PLANNED TO BE HIRED AT END OF MONTH ";MH(I): NEXT I
  137. 2040  PRINT : FOR I = 1 TO NP: PRINT "% OF SALES TIME PLANNED FOR ";PN$(I);" =";PT(I);"%";: PRINT  SPC( K)"SALES VALUE FOR ";PN$(I);" =$";SV(I): NEXT I
  138. 2041  PRINT : FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  139. 2042  PRINT  TAB( 30)"UNIT SALES FORECAST BY MONTH"
  140. 2043  FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  141. 2050 SY = 0: FOR I = 1 TO 12:PK = (I *K) +8:W$ = M$(I): GOSUB 30: NEXT I
  142. 2053 PK = (K *16 -6):W$ = "TOTALS": GOSUB 35:SY = 0
  143. 2054  FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  144. 2060  FOR I = 1 TO NP
  145. 2065  PRINT PN$(I);:SY =  LEN(PN$(I))
  146. 2070  FOR N = 1 TO 12
  147. 2080 W$ =  STR$(U(I,N))
  148. 2081 PK = (N *K) +11 - LEN(W$): GOSUB 30
  149. 2085 TX = TX +U(I,N)
  150. 2090  NEXT N:W$ =  STR$(TX)
  151. 2091 PK = (K *16) -1 - LEN(W$): GOSUB 35:SY = 0
  152. 2092 TX = 0: NEXT I
  153. 2999  REM  PRINT DOLLAR VALUES
  154. 3000  FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  155. 3001  PRINT : PRINT  TAB( K *5)" $$ COMPOSITE NET CONTRACT VALUE IN ";Z$: FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  156. 3002  FOR N = 1 TO 12
  157. 3003 PK = (N *K) +8:W$ = M$(N): GOSUB 30: NEXT N
  158. 3004 PK = (K *16) -6:W$ = "TOTALS": GOSUB 35:SY = 0
  159. 3005  FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  160. 3007  FOR I = 1 TO NP
  161. 3010  PRINT PN$(I);:SY =  LEN(PN$(I))
  162. 3020  FOR N = 1 TO 12
  163. 3030 W$ =  STR$(D(I,N))
  164. 3032 PK = (N *K) +11 - LEN(W$): GOSUB 30
  165. 3035 TX = TX +D(I,N)
  166. 3040  NEXT N:W$ =  STR$(TX):PK = (K *16) -1 - LEN(W$): GOSUB 35:TX = 0:SY = 0
  167. 3050  NEXT I
  168. 3055  PRINT : PRINT "TOTALS";:SY = 6
  169. 3060  FOR N = 1 TO 12: FOR I = 1 TO NP
  170. 3065 T(N) = T(N) +D(I,N)
  171. 3070  NEXT I
  172. 3075 W$ =  STR$(T(N))
  173. 3080 PK = (N *K) +11 - LEN(W$): GOSUB 30
  174. 3082 TX = TX +T(N)
  175. 3085  NEXT N
  176. 3090 W$ =  STR$(TX):PK = (K *16) -1 - LEN(W$): GOSUB 35:TX = 0:SY = 0
  177. 3091  PRINT  CHR$(9);"40N": PR# 0: PRINT : INPUT "SKIP TO NEW PAGE AND HIT RETURN";XX$
  178. 3092  PR# 1: PRINT  CHR$(9);"96N": PRINT  CHR$(30): REM  PRINTER CONTROLS
  179. 3095  PRINT : FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  180. 3100  PRINT : PRINT  TAB( 20)"*** SALES PRODUCTIVITY PROFILE ***"
  181. 3105  PRINT 
  182. 3110 W$ = "% OF SALESPEOPLE": PRINT W$;:SY =  LEN(W$):PK = 25:W$ = "SALES PRODUCTIVITY BY MONTH": GOSUB 30:W$ = "# OF SALESPEOPLE":PK = (K *16) -1 - LEN(W$): GOSUB 35:SY = 0
  183. 3115 W$ = "IN EACH RANGE": PRINT W$;:SY =  LEN(W$):PK = (K *16) -1 - LEN(W$): GOSUB 35:SY = 0
  184. 3117  FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  185. 3118 SY = 0: FOR I = 1 TO 12:PK = (I *K) +8:W$ = M$(I): GOSUB 30: NEXT I: PRINT 
  186. 3119  FOR I = 1 TO (K *16): PRINT "-";: NEXT I: PRINT 
  187. 3120  FOR I = 1 TO NP
  188. 3122  PRINT PN$(I):RNK = 100
  189. 3125  FOR X = 5 TO 1  STEP  -1
  190. 3127 RNK = RNK -20:W$ =  STR$(RNK) +" %+": PRINT W$;:SY =  LEN(W$)
  191. 3130  FOR N = 1 TO 12
  192. 3135 W$ =  STR$(P(I,X,N)):PK = (N *K) +11 - LEN(W$): GOSUB 30
  193. 3136  NEXT N
  194. 3137 W$ =  STR$(ES(I,X)/100):PK = (K *16) -1 - LEN(W$): GOSUB 35:SY = 0
  195. 3140  NEXT X: PRINT : NEXT I
  196. 3145  PRINT : FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  197. 3150  PRINT : PRINT "NEW HIRE PROFILE"
  198. 3155  FOR I = 1 TO NP: PRINT PN$(I);:SY =  LEN(PN$(I))
  199. 3157  FOR X = 1 TO 12
  200. 3160 W$ =  STR$(PN(I,X)):PK = (X *K) +11 - LEN(W$): GOSUB 30
  201. 3165  NEXT X
  202. 3170 W$ =  STR$(PZ(I)/100):PK = (K *16) -1 - LEN(W$): GOSUB 35
  203. 3175  NEXT I
  204. 3180  PRINT : PRINT : FOR I = 1 TO (K *16): PRINT "=";: NEXT I: PRINT 
  205. 3200  REM 
  206. 4000  PRINT  CHR$(9);"40N": REM  RESTORE DISPLAY
  207. 4005  PR# 0
  208. 4010  PRINT "END": END 
  209. 5000  HOME : PRINT : PRINT "THE FORECAST AND SALES TREND (F.A.S.T)": PRINT "ANALYSIS MODEL IS A QUICK AND POWERFUL"
  210. 5005  PRINT "METHOD FOR EVALUATING ALTERNATIVE": PRINT "STRATEGIES FOR DEPLOYING AND HIRING": PRINT "SALESMEN ACROSS MULTIPLE PRODUCT LINES."
  211. 5010  PRINT : PRINT "YOU WILL BE ASKED TO ENTER A PROFILE": PRINT "OF SALES PRODUCTIVITY BY MONTH": PRINT "FOR THE TOP 20% OF YOUR SALESFORCE..."
  212. 5020  PRINT "THEN NEXT 20% OF THE SALESFORCE.......": PRINT "THE NEXT 20%.... ": PRINT "AND SO ON THROUGH THE 5 PRODUCTIVITY"
  213. 5025  PRINT "RANGES OF SELLING"
  214. 5030  PRINT : PRINT "YOU SHOULD ENTER THE NUMBER OF PRODUCTS": PRINT "YOU ARE MODELING AT THE START OF THE": PRINT "SESSION.  THEN THE SYSTEM WILL ASK YOU"
  215. 5040  PRINT "TO ENTER:": PRINT  TAB( 5)"1. PRODUCT NAME": PRINT  TAB( 5)"2. DOLLAR UNITS (1, 100, 1000)": PRINT  TAB( 5)"3. $ SALES VALUE PER UNIT"
  216. 5050  PRINT  TAB( 5)"4. PRODUCTIVITY PROFILES": INPUT "HIT RETURN FOR PAGE 2";X$
  217. 5055  HOME : PRINT "WHEN YOU HAVE COMPLETED THE PROCESS OF": PRINT "ENTERING THE MODEL, YOU SHOULD THEN": PRINT "SAVE IT ON DISK."
  218. 5060  PRINT : PRINT "YOU'LL THEN BE ASKED TO ENTER THE": PRINT "THE NUMBER OF SALESMEN ON BOARD AT THE": PRINT "START OF THE YEAR": PRINT 
  219. 5062  PRINT "THEN YOU'LL BE ASKED FOR THE % OF TIME": PRINT "TO BE SPENT ON EACH PRODUCT YOU HAVE": PRINT "ENTERED INTO THE SYSTEM"
  220. 5063  PRINT "THE SUM OF YOUR %'S SHOULD EQUAL 100%.": PRINT 
  221. 5065  PRINT "THEN ENTER THE NUMBER OF NEW HIRES ": PRINT "PLANNED AND THE MONTH PLANNED TO HIRE": PRINT "THEM."
  222. 5070  PRINT : PRINT "TO STOP ENTERING NEW HIRE INFORMATION": PRINT "ENTER 0 AND HIT RETURN ON THE NEXT": PRINT "REQUEST FOR NEW HIRE INFORMATION.  THE"
  223. 5075  PRINT "SYSTEM WILL THEN TAKE OVER AND PRINT ": PRINT "THE COMPLETE ANALYSIS."
  224. 5077  INPUT "HIT RETURN TO GOTO NEXT PAGE";X$: HOME : PRINT 
  225. 5080  PRINT : PRINT "HIT RETURN TO BEGIN.": PRINT "WHEN YOU RETURN, YOU'LL BE ASKED IF YOU": PRINT "WANT TO CREATE, OR READ, THE MODEL."
  226. 5085  PRINT "IF IT IS YOUR FIRST SESSION, YOU HIT": PRINT "'C' FOR CREATE. ON SUBSEQUENT SESSIONS": PRINT "YOU CAN SIMPLY READ IN THE MODEL FROM"
  227. 5090  PRINT "DISK AND WORK STRATEGY ALTERNATIVES": PRINT "DIRECTLY."
  228. 5095  PRINT : INPUT "HIT RETURN.";X$: RETURN 
  229. 6000  END 
  230. 10000  DATA  JAN,FEB,MAR,APR,MAY,JUN,JLY,AUG,SEP,OCT,NOV,DEC